package com.example.springboot.controller.视图解析;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * 已经自动配置好了文件上传解析器
 * 如果自己配制的有   优先使用用户配置的
 *
 * 执行流程  再doDispatch() 会判断是否是一个文件上传
 * 前端 enctype="multipart/form-data">  有这个  说明是文件上传
 * 只有一个文件上传解析器，直接解析
 *
 */
@Controller
public class 文件上传 {


    @GetMapping("/filesc")
    public String files(){
        return "filesc";
    }

    /**
     * MultipartFile 自动封装上传过来的文件
     */
    @PostMapping("/upload")
    public String upload(@RequestParam("email") String email,
                         @RequestParam("username") String username,
                         @RequestPart("headerImg") MultipartFile headerImg,//封装文件
                         @RequestPart("photos") MultipartFile[] photos){

        System.out.print("    邮箱"+email);
        System.out.print("    名字"+username);
        System.out.print("    头像"+headerImg.getSize());
        System.out.println("    生活照个数"+photos.length);
        if(!headerImg.isEmpty()){
            //保存到文件服务器，OSS服务器
            headerImg.getOriginalFilename();//获取文件原始名字
            try {//相对路径   有问题
                headerImg.transferTo(new File("D:\\Work\\IDEA\\springBoot\\src\\main\\resources\\files\\"+headerImg.getOriginalFilename()));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(photos.length>0){
            for (MultipartFile m:photos) {
                if(!m.isEmpty()){
                    //保存到文件服务器，OSS服务器
                    try {
                        m.transferTo(new File("D:\\Work\\IDEA\\springBoot\\src\\main\\resources\\files\\"+m.getOriginalFilename()));
                    } catch (IOException e) { e.printStackTrace();}
                }
            }
        }
        return "redirect:/filesc";
    }


}
